iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0

胎嘎侯~今天要來問問大家,你是怎麼理解Eloquent ORM的呢?

Eloquent ORM

ORM(Object Relational Mapping)中文為物件關聯對映,在中國則稱為對象關係映射,筆者一直覺得這個概念挺抽象,但實際操作會清楚許多,先不用擔心。

另外,筆者很好奇Eloquent名稱的來由,中譯是雄辯/口才,難道是說它有強大的能力使Model與DB進行溝通嗎?哈哈,不過先不討論,今天把重點放在對ORM的理解上,來好好理解葫蘆裡賣的是什麼藥,我們才能安心服用~

官方文件對ORM的解釋是:

Laravel附帶的Eloquent ORM,提供了一個漂亮簡單的ActiveRecord實現於資料庫處理。每個資料庫表都有一個對應的Mode,與該表相互作用。Mode使您可以查詢表中的數據,以及將新記錄插入表中。

無需編寫一長串的查詢語法,只要簡單的語法就可以在幾秒鐘內獲得原先複雜的查詢。

使用之前必須先至你的.env設定環境參數,不過能這麼順利使用mysql來連接的原因,原來Laravel在config/database.php.中早就為使用者安排好一切,寫好了連接的資訊。我們來看看mysql連接設置有哪些:

Laravel也提供其他預設的連接:sqlite、pgsql、sqlsrv。

找資料的過程中發現撰寫於2016年的一篇論文,題目為Comparison of performance between Raw SQL and Eloquent ORM in Laravel,該論文的第11頁圖2:2清楚的揭示工作流程,對理解ORM會有幫助,這裡我就不引用了。

回到前頭,我們提到實際操作有助於了解Eloquent,那先來定義一個模型。
筆者習慣model跟migration一起搞定,指令如下,輸入後會顯示Model與Migration的新增訊息。
這邊要特別注意務必跟隨Laravel的命名規則走,Model類別名稱一律採用單數,筆者曾經踩了命名坑填了小寫,蠢到家才更證明好好看文件的重要性,警世別學我啊(哭)。

charleen@charleen-VirtualBox:~/Email_Verification$ php artisan make:model TestUser -m
Model created successfully.
Created Migration: 2019_10_05_093341_create_test_users_table

接著我們會發現圖片中有一行use Illuminate\Database\Eloquent\Model;
好像沒看到跟migration的關聯?那是因為在這種情況下,Eloquent將假定TestUser Model將記錄存儲在test_users表中。

今天就先到這裡,明天再來講講他們的關係~

明天見!


上一篇
Day19-Laravel新手基礎訓-郵件驗證(Email Verification)
下一篇
Day21-Laravel新手基礎訓-Eloquent: Relationships-One to One
系列文
後端PHP+Laravel--新手實戰日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言